python捕捉warning | 您所在的位置:网站首页 › python 捕获warning › python捕捉warning |
我只是试图捕获scipy.optimize.curve_fit函数抛出的OptimizeWarning,但我意识到它没有被识别为有效的异常. 这是我正在做的非常简单的想法: from scipy.optimize import curve_fit try: popt, pcov = curve_fit(some parameters) except OptimizeWarning: print 'Maxed out calls.' # do something 我看了一眼the docs,但那里什么都没有. 我错过了一些明显的东西,还是因为某些原因而没有明确定义? 顺便说一下,这是我得到的完整警告,我想抓住: /usr/local/lib/python2.7/dist-packages/scipy/optimize/minpack.py:604: OptimizeWarning: Covariance of the parameters could not be estimated category=OptimizeWarning) 解决方法: 您可以要求Python使用以下代码将此警告作为异常引发: import warnings from scipy.optimize import OptimizeWarning warnings.simplefilter("error", OptimizeWarning) # Your code here 警告问题 不幸的是,Python中的警告有一些您需要注意的问题. 多个过滤器 首先,可以有多个过滤器,因此您的警告过滤器可以被其他内容覆盖.这不是太糟糕,可以使用catch_warnings上下文管理器解决: import warnings from scipy.optimize import OptimizeWarning with warnings.catch_warnings(): warnings.simplefilter("error", OptimizeWarning) try: # Do your thing except OptimizeWarning: # Do your other thing 举起一次 其次,警告仅在默认情况下提出一次.如果在设置过滤器之前已经提出警告,则可以更改过滤器,它不会再次发出警告. 据我所知,遗憾的是你无能为力.您需要尽可能早地确保运行warnings.simplefilter(“error”,OptimizeWarning). 标签:python,exception,warnings,scipy 来源: https://codeday.me/bug/20190609/1204057.html |
CopyRight 2018-2019 实验室设备网 版权所有 |